#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int DCLLDataType;

struct DCLLNode
{
	DCLLDataType data;
	struct DCLL* prev;
	struct DCLL* next;
};

typedef struct DCLLNode DCLLNode;

DCLLNode* CreateDCLLNode(DCLLDataType x);
DCLLNode* DCLLInit();
void DCLLPushBack(DCLLNode* phead, DCLLDataType x);
void DCLLPrint(DCLLNode* phead);
bool DCLLisEmpty(DCLLNode* phead);
void DCLLPopBack(DCLLNode* phead);
void DCLLPushFront(DCLLNode* phead, DCLLDataType x);
void DCLLPopFront(DCLLNode* phead);
DCLLNode* DCLLFind(DCLLNode* phead, DCLLDataType x);
void DCLLInsert(DCLLNode* pos, DCLLDataType x);
void DCLLErase(DCLLNode* pos);
void DCLLDestroy(DCLLNode* phead);